package cc.zy.base.businesses.mapper;

import cc.zy.base.businesses.entity.Major;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 专业表
 * Mapper
 *
 * @author guozhikun
 * @date 2021-01-26 19:41:01
 */
public interface MajorMapper extends BaseMapper<Major> {

    /**
     * 院校专业详情信息
     *
     * @param page  分页对象
     * @param major 用户对象，用于传递查询条件
     * @param <T>
     * @return
     */
    <T> IPage<Major> findMajorDetailPage(Page<T> page, @Param("major") Major major);

    long countMajorDetail(@Param("major") Major major);

    /**
     * 全部专业列表
     *
     * @return
     */
    List<Major> findMajor();

    /**
     * 通过ID查找专业类别
     *
     * @param majorId
     * @return
     */
    Major findById(Integer majorId);

    /**
     * 方法描述：根据院校id、层次id查询专业[id、名称]
     *
     * @param collegeId 院校id【必传项】
     * @param levelId   层次id【必传项】
     * @return java.util.List<cc.zy.base.businesses.entity.Major> 专业集合
     * @author LiPeng
     * @date 2021/3/9
     */
    List<Major> selectMajorForSelect(@Param("collegeId") Integer collegeId, @Param("levelId") Integer levelId);

    /**
     * 方法描述：查：根据批次id、院校id、层次id获取专业信息
     *
     * @param batchId   批次id
     * @param collegeId 院校id
     * @param levelId   层次id
     * @return java.util.List<cc.zy.base.businesses.entity.Major> 专业集合
     * @author LiPeng
     * @date 2021/3/18
     */
    List<Major> selectMajorByBatchForSelect(@Param("batchId") Integer batchId, @Param("collegeId") Integer collegeId, @Param("levelId") Integer levelId);

    /**
     * 方法描述：根据专业名称获取其 ID
     *
     * @param fullName 专业名称【必传项】
     * @return java.lang.Integer 专业id
     * @author LiXu
     * @date 2021/3/12
     */
    Integer findId(@Param("fullName") String fullName);

    /**
     * 根据名称和学习形式查找专业id
     *
     * @Author hutengjiao
     * @Date: 2022/1/11
     * @Param [name, studyType]
     * @return java.lang.Integer
     */
    Integer selectMajorId(@Param("name") String name, @Param("studyType") String studyType);
}